Print rendering systems convert documents expressed in a Page Description Language (PDL) into pixels rendered onto a physical page. Trends in microprocessor designs are directed towards increasing the number of processing cores in a system rather than increasing the capabilities of an individual processor core. Therefore, a modern print rendering system algorithm needs to take advantage of this by efficiently utilising as many processing cores as possible to gain the best performance from a system.
To achieve efficient processor utilisation, print rendering systems must efficiently divide the rendering work between processors in a way that allows each processor to operate as independently as possible. When there are sufficient free processors on a system, this load state of the system, being referred to as “under-scheduled”, multiple threads are able to communicate freely and performance is optimised because the threads can operate without having to wait for each other. When the system is over-scheduled and there are more active threads than processors, the multiple threads do not run concurrently.
The situation is complicated when the software is operating on virtualised hardware. Hardware virtualisation allows multiple operating systems to run independently on a single computer, managed by a virtualisation supervisor. A virtualisation supervisor is responsible for assigning resources, such as memory and processors, to each operating system instance. Hardware virtualisation is a common technique in cloud computing, where computing resource is sold as a commodity. In a virtualised environment, operating system instances are isolated, and unaware of other running instances. As with the earlier description of an over-scheduled operating system, where there are more active threads than processors, the problem of over-scheduling also applies to hardware virtualisation when more processor resources are assigned than what is available.